package Week.w150;

import common.TreeNode;
import org.junit.Test;

import java.beans.Transient;
import java.util.*;

public class Solution2 {
    public int maxLevelSum(TreeNode root) {
        if(root==null){
            return 0;
        }
        List<Integer> result=new ArrayList<>();
        List<TreeNode> levelTree=new ArrayList<>();
        levelTree.add(root);
        getResult(result,levelTree);
        int maxIndex=0;
        int maxValue=result.get(0);
        for(int i=1;i<result.size();i++){
            if(result.get(i)>maxValue){
                maxIndex=i;
                maxValue=result.get(i);
            }
        }
        return maxIndex+1;
    }

    private void getResult( List<Integer> result,List<TreeNode> levelTree){
        List<TreeNode> treeNodes=new ArrayList<>();
        int resultValue=0;
        for(TreeNode treeNode:levelTree){
            resultValue+=treeNode.val;
            if(treeNode.left!=null){
                treeNodes.add(treeNode.left);
            }
            if(treeNode.right!=null){
                treeNodes.add(treeNode.right);
            }
        }
        result.add(resultValue);
        if(treeNodes.size()!=0){
            getResult(result,treeNodes);
        }
    }
    @Test
    public void test(){
        TreeNode root1 = new TreeNode(989);
        TreeNode root2 = new TreeNode(10250);
        root1.right=root2;
        TreeNode root3 = new TreeNode(98693);
        TreeNode root4 = new TreeNode(-89388);
        root2.left=root3;
        root2.right=root4;
        TreeNode root5 = new TreeNode(-32127);
        root4.right=root5;
      System.out.println( maxLevelSum(root1));

    }
}
